「GitHub Actions を活用して GitHub Packages に公開する」オンライントレーニングを受講してみた

「GitHub Actions を活用して GitHub Packages に公開する」オンライントレーニングを受講してみた

Clock Icon2024.08.28

本記事では、Microsoft Learn が提供する無料オンライントレーニング「GitHub Actions を活用して GitHub Packages に公開する」の内容を紹介します。

Microsoft Learn とは

Microsoft Learn は、Microsoft が提供する無料のオンライン学習プラットフォームです。個人や組織向けに、クラウド、AI、開発ツールなど幅広い技術トピックについて、実践的なトレーニングコンテンツを提供しています。

https://learn.microsoft.com/ja-jp/training/

今回は、過去に GitHub Actions 初級トレーニングを 2 つ受講済みなので中級編をやってみました。

https://learn.microsoft.com/ja-jp/training/modules/github-actions-packages/

トレーニングの概要

学習内容

本トレーニングは以下の 2 つのパートで構成されています。

  1. 座学パート:
    • GitHub Packages の基礎知識
    • GitHub Container Registry の使用方法
  2. 実技パート:
    • ワークフロー作成
      • Docker イメージのビルド
      • GitHub Container Registry にコンテナイメージを登録と公開

座学パート

座学パートでは、GitHub Packages の基礎知識を学習します。GitHub Actions ワークフローを使用して Docker イメージをビルドし、GitHub Container Registry (GHCR) にプッシュする方法の解説があります。

この部分は簡潔にまとめられており、トレーニングの重点は次の実技パートに置かれていました。

実技パート

実技パートでは、以下の 2 つの主要タスクに取り組みます。

  1. Docker イメージをビルドし、GHCR に登録するための GitHub Actions ワークフローの作成
  2. GHCR からイメージをプルし、ローカル環境でコンテナの動作確認

以下は作成したワークフローの詳細です。

  • permissions: セクションで必要な権限を設定
    • GitHub Packages への書き込み権限(Docker イメージの登録用)
    • コンテンツの読み取り権限(ソースコードの取得用)
  • ${{ secrets.GITHUB_TOKEN }} は GitHub Actions が自動的に提供するトークン
    • permissions: で指定した権限が付与される
  • Docker イメージのビルドと GHCR へのプッシュ
  • docker/metadata-action を使用した Docker イメージへのタグ付け
publish.yml
name: Publish to Docker
on:
  push:
    branches:
      - main
permissions:
  packages: write
  contents: read
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      # Add your test steps here if needed...
      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ghcr.io/bigmuramura/publish-packages/game
          tags: type=sha
      - name: Login to GHCR
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Build container
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}

main ブランチにプッシュ後、ワークフローが実行されるとパッケージとして、Docker イメージが公開されました。イメージタグはハッシュ値が設定されています。

Package_publish-packages_game

プルしてローカルでコンテナを起動しました。

$ docker run -dp 8080:80 --rm ghcr.io/bigmuramura/publish-packages/game:sha-5a2a3fd

Web ブラウザからアクセスすると三目並べができました。

Tic_Tac_Toe_と_Tic_Tac_Toe

以上でトレーニングは終了です。

まとめ

GitHub Actions と GitHub Packages を組み合わせたワークフローの構築方法を学びました。特に、Docker イメージのビルドから GitHub Container Registry への公開までの一連のプロセスを自動化する方法を習得しました。

おわりに

このトレーニングを通じて、GitHub Container Registry (GHCR) の存在を知りました。GHCR は GitHub Packages の機能の 1 つとして提供されているコンテナレジストリということを知りました。
これまではプライベートのイメージの保存先となると Amazon ECR か、Docker Hub に保存することが多く、それ以外のコンテナレジストリの知識が不足していることを認識できました。

参考までに、GHCR の料金体系に関する情報を以下に記載します。

https://docs.github.com/ja/billing/managing-billing-for-github-packages/about-billing-for-github-packages

コンテナイメージに付与するタグやラベルはdocker/metadata-actionを使うと便利で良いですね。

https://github.com/docker/metadata-action

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.